package entity

import "time"

// DatabaseStats 数据库统计信息
// 用于描述数据库的整体统计数据，包括大小、表数量、视图数量、存储过程等，便于监控和分析数据库运行状况
//
type DatabaseStats struct {
	ID              int64     `json:"id"`               // 数据库ID
	Name            string    `json:"name"`             // 数据库名称
	Size            int64     `json:"size"`             // 数据库大小(字节)
	TableCount      int       `json:"table_count"`      // 表数量
	ViewCount       int       `json:"view_count"`       // 视图数量
	ProcedureCount  int       `json:"procedure_count"`  // 存储过程数量
	FunctionCount   int       `json:"function_count"`   // 函数数量
	TriggerCount    int       `json:"trigger_count"`    // 触发器数量
	EventCount      int       `json:"event_count"`      // 事件数量
	UserCount       int       `json:"user_count"`       // 用户数量
	ConnectionCount int       `json:"connection_count"` // 连接数量
	QueryCount      int64     `json:"query_count"`      // 查询次数
	SlowQueryCount  int64     `json:"slow_query_count"` // 慢查询次数
	ErrorCount      int64     `json:"error_count"`      // 错误次数
	CreatedAt       time.Time `json:"created_at"`       // 创建时间
	UpdatedAt       time.Time `json:"updated_at"`       // 更新时间
}

// TableStats 表统计信息
// 用于描述数据库中单个表的统计数据，包括表名、大小、行数、索引数等，便于分析表的使用情况
//
type TableStats struct {
	ID             int64     `json:"id"`               // 表ID
	Name           string    `json:"name"`             // 表名
	Database       string    `json:"database"`         // 所属数据库名
	Size           int64     `json:"size"`             // 表大小(字节)
	RowCount       int64     `json:"row_count"`        // 行数
	ColumnCount    int       `json:"column_count"`     // 列数
	IndexCount     int       `json:"index_count"`      // 索引数
	QueryCount     int64     `json:"query_count"`      // 查询次数
	InsertCount    int64     `json:"insert_count"`     // 插入次数
	UpdateCount    int64     `json:"update_count"`     // 更新次数
	DeleteCount    int64     `json:"delete_count"`     // 删除次数
	LastQueryTime  time.Time `json:"last_query_time"`  // 最后查询时间
	LastUpdateTime time.Time `json:"last_update_time"` // 最后更新时间
	CreatedAt      time.Time `json:"created_at"`       // 创建时间
	UpdatedAt      time.Time `json:"updated_at"`       // 更新时间
}

// QueryStats 查询统计信息
// 用于记录单次查询的详细信息，包括查询语句、类型、涉及表、耗时、影响行数等，便于性能分析和问题定位
//
type QueryStats struct {
	ID           int64     `json:"id"`            // 查询ID
	Database     string    `json:"database"`      // 所属数据库名
	Query        string    `json:"query"`         // 查询语句
	Type         string    `json:"type"`          // 查询类型（如select、update等）
	Table        string    `json:"table"`         // 涉及的表
	Duration     int64     `json:"duration"`      // 执行时间(毫秒)
	RowsAffected int64     `json:"rows_affected"` // 影响行数
	Error        string    `json:"error"`         // 错误信息
	User         string    `json:"user"`          // 执行用户
	Host         string    `json:"host"`          // 执行主机
	CreatedAt    time.Time `json:"created_at"`    // 创建时间
}

// ConnectionStats 连接统计信息
// 用于描述数据库连接的统计数据，包括连接ID、状态、活跃连接数、错误数等，便于监控连接健康状况
//
type ConnectionStats struct {
	ID           int64     `json:"id"`             // 连接ID
	Database     string    `json:"database"`       // 数据库名
	User         string    `json:"user"`           // 用户
	Host         string    `json:"host"`           // 主机
	Port         int       `json:"port"`           // 端口
	State        string    `json:"state"`          // 状态
	Command      string    `json:"command"`        // 命令
	Time         int64     `json:"time"`           // 连接时间(秒)
	Query        string    `json:"query"`          // 当前查询
	CreatedAt    time.Time `json:"created_at"`     // 创建时间
	LastActiveAt time.Time `json:"last_active_at"` // 最后活动时间
}
